/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ppsa.dao;

import com.ppsa.bean.CargoBean;
import com.ppsa.bean.DocumentoBean;
import com.ppsa.bean.EmpresaBean;
import com.ppsa.bean.FormatoBean;
import com.ppsa.bean.ProcedimientoBean;
import com.ppsa.bean.ResultadoBean;
import com.ppsa.bean.TipoDocumentoBean;
import com.ppsa.bean.UsuarioBean;
import com.ppsa.common.Constantes;
import com.ppsa.common.Util;
import java.sql.DriverManager;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;

/**
 *
 * @author AdminTdp
 */
public class DocumentoDao extends AccesoDao {
    
    static final Logger m_log = Logger.getLogger(DocumentoDao.class.getName());
    
    public DocumentoDao() throws AccesoDaoException {
        super();
    }
    public List<DocumentoBean> listarDocumentos( DocumentoBean objA_DocumentoBean , UsuarioBean objA_usuario ) throws Exception {
        m_log.info("[listarDocumentos] << ENTER");
        List<DocumentoBean> lstL_documento = new ArrayList<DocumentoBean>();
        DocumentoBean objL_documento = null;

        try{
            m_log.info("codigo Usuario" + objA_usuario.getStrpv_codigoUsuario());        
            this.objPt_conn = DriverManager.getConnection(strpv_conexionUrl);
            String strl_procedure = "{ call ppsa_sp_listarDocumento(?) }";
            objPt_cstmt = objPt_conn.prepareCall(strl_procedure);
            objPt_cstmt.setString(1, objA_usuario.getStrpv_codigoUsuario());
            objPt_rs = objPt_cstmt.executeQuery();
            while( objPt_rs.next() ) {
                objL_documento = new DocumentoBean();
                objL_documento.setStrpv_codigoDocumento( objPt_rs.getString( "ID_DOCUMENTO" ) );
                objL_documento.setStrpv_descripcionEmpresa( objPt_rs.getString( "NOMBRE_EMPRESA" ) );
                objL_documento.setStrpv_codigoReferencial( objPt_rs.getString( "CODIGO_REFERENCIA" ) );
                objL_documento.setStrpv_nombreDocumento( objPt_rs.getString( "NOMBRE_DOCUMENTO" ) );
                objL_documento.setStrpv_codigoVersion( objPt_rs.getString( "ID_VERSION" ) );
                //objL_documento.setStrpv_rutaArchivoPrincipal( arrL_nombres[i] );
                objL_documento.setStrpv_responsable( "CARGOS" );
                objL_documento.setStrpv_fechaAprobacion( objPt_rs.getString( "FECHA_APROBACION" ) );
                objL_documento.setStrpv_fechaVigencia( objPt_rs.getString( "FECHA_VIGENCIA" ) );
                objL_documento.setStrpv_ubicacion( objPt_rs.getString( "UBICACION" ) );
                objL_documento.setStrpv_numeroCopia( objPt_rs.getString( "NUMERO_COPIA" ) );
                objL_documento.setStrpv_responsableCopia( objPt_rs.getString( "RESPONSABLE_COPIA" ) );
                objL_documento.setStrpv_nombreResponsableCopia( objPt_rs.getString( "NOMBRE_RESPONSABLE" ) );
                objL_documento.setStrpv_descripcionTipoDocumento( "Procedimiento" );
                objL_documento.setStrpv_codigoEstado( objPt_rs.getString( "ESTADO" ) );
                objL_documento.setStrpv_codigoEstadoDocumento( objPt_rs.getString( "ESTADO_DOCUMENTO" ) );
                objL_documento.setStrpv_codigoEstadoUsuario( objPt_rs.getString( "ESTADO_USUARIO" ) );
                objL_documento.setStrpv_descripcionTipoDocumento( objPt_rs.getString( "TIPO_DOCUMENTO" ) );
                objL_documento.setStrpv_imagenEstado( Util.convertirCodigoEstadoImagen( objL_documento.getStrpv_codigoEstado() ) );

                lstL_documento.add( objL_documento );
            }
            
        }catch(  Exception ex ) {
            ex.printStackTrace();
        }finally{
            closeCallableStatement(objPt_cstmt);
            closeResultSet(objPt_rs);
            closeConnection(objPt_conn);
        }  
        m_log.info("[listarDocumentos] >> EXIT");
        return lstL_documento;
    }
    public List<EmpresaBean> selectEmpresa() throws Exception{
        List<EmpresaBean> lstL_empresa = new  ArrayList<EmpresaBean>();
        
        EmpresaBean objL_empresa = null;
        try{
            this.objPt_conn = DriverManager.getConnection(strpv_conexionUrl);
            String strl_procedure = "{ call ppsa_sp_listarEmpresa() }";
            objPt_cstmt = objPt_conn.prepareCall(strl_procedure);

            objPt_rs = objPt_cstmt.executeQuery();
            while( objPt_rs.next() ) {
                objL_empresa = new EmpresaBean();
                //System.out.println("--->" + objPt_rs.getString("NOMBRE"));
                objL_empresa.setStrpv_codigoEmpresa(objPt_rs.getString("ID_EMPRESA"));
                objL_empresa.setStrpv_nombreEmpresa(objPt_rs.getString("NOMBRE"));
                lstL_empresa.add(objL_empresa);
            }
        
        }catch(Exception ex){
            ex.printStackTrace();
        }finally {
            closeCallableStatement(objPt_cstmt);
            closeResultSet(objPt_rs);
            closeConnection(objPt_conn);
        }
        return lstL_empresa;
    
    }
    public List<ProcedimientoBean> selectDocumentoProcedimiento( UsuarioBean objA_usuario) throws Exception{
        m_log.info("[selectDocumentoProcedimiento] << ENTER");
        List<ProcedimientoBean> lstL_temp = new ArrayList<ProcedimientoBean>();
        ProcedimientoBean objL_procedimiento = null;
         try{
            this.objPt_conn = DriverManager.getConnection(strpv_conexionUrl);
            String strl_procedure = "{ call ppsa_sp_listarDocumentoProcedimiento(?) }";
            
            objPt_cstmt = objPt_conn.prepareCall(strl_procedure);
            objPt_cstmt.setString( 1, objA_usuario.getStrpv_codigoUsuario() );
            objPt_rs = objPt_cstmt.executeQuery();
            while( objPt_rs.next() ) {
                objL_procedimiento = new ProcedimientoBean();
                //System.out.println("--->" + objPt_rs.getString("NOMBRE"));
                objL_procedimiento.setStrpv_codigoProcedimiento( objPt_rs.getString("CODIGO"));
                objL_procedimiento.setStrpv_nombreProcedimiento( objPt_rs.getString("NOMBRE"));
                lstL_temp.add(objL_procedimiento);
            }
        
        }catch(Exception ex){
            ex.printStackTrace();
        }finally {
            closeCallableStatement(objPt_cstmt);
            closeResultSet(objPt_rs);
            closeConnection(objPt_conn);
        }
         System.out.println( "-->" + lstL_temp.size() );
         m_log.info("[selectDocumentoProcedimiento] >> EXIT");
        return lstL_temp;
    }
    
    public List<FormatoBean> listarFormato( String strpv_codigoDocumento, String strpv_codigoVersion ) throws Exception {
        List<FormatoBean> lstL_formato = new ArrayList<FormatoBean>();
        FormatoBean objL_formato = null;
        try {
            this.objPt_conn = DriverManager.getConnection(strpv_conexionUrl);
            String strl_procedure = "{ call ppsa_sp_listarFormato(?) }";
            objPt_cstmt = objPt_conn.prepareCall(strl_procedure);
            Integer intpv_codigoDocumento =  Util.validarFormatoString( strpv_codigoDocumento ) ?  Integer.parseInt( strpv_codigoDocumento ) : -1;
            //Integer intpv_codigoVersion =  Util.validarFormatoString( strpv_codigoDocumento ) ?  Integer.parseInt( strpv_codigoDocumento ) : -1;
            objPt_cstmt.setInt(1, intpv_codigoDocumento );
            //objPt_cstmt.setInt(2, intpv_codigoVersion);
            System.out.println( "***********************--->*"+intpv_codigoDocumento );
            objPt_rs = objPt_cstmt.executeQuery();
            while( objPt_rs.next() ) {
                objL_formato = new FormatoBean();
                objL_formato.setStrpv_codigoFormato( objPt_rs.getString( "ID_FORMATO" ) );
                objL_formato.setStrpv_versionFormato( objPt_rs.getString( "ID_VERSION" ) );
                objL_formato.setStrpv_codigoDocumento( objPt_rs.getString( "ID_DOCUMENTO" ) );
                objL_formato.setStrpv_codigoVersionDocumento( objPt_rs.getString( "ID_VERSION_DOCUMENTO" ) );
                objL_formato.setStrpv_codigoArchivo( objPt_rs.getString( "URL" ) );
                objL_formato.setStrpv_codigoRefFormato( objPt_rs.getString( "COD_REF" ) );
                objL_formato.setStrpv_nombreFormato( objPt_rs.getString( "NOMBRE" ) );
                objL_formato.setStrpv_extension( objPt_rs.getString( "EXTENSION" ) );
                objL_formato.setStrpv_estadoFormato( objPt_rs.getString( "ESTADO" ) );
                lstL_formato.add( objL_formato );
            }
        } catch ( Exception ex ) {
            ex.printStackTrace();
        } finally {
            closeCallableStatement( objPt_cstmt );
            closeResultSet( objPt_rs );
            closeConnection( objPt_conn );
        }
        return lstL_formato;
    }
    public List<DocumentoBean> listarDocumentosxVersion( DocumentoBean objA_DocumentoBean ) throws Exception {
        List<DocumentoBean> lstL_documento = new ArrayList<DocumentoBean>();
        DocumentoBean objL_documento = null;
        
        try{
        
            this.objPt_conn = DriverManager.getConnection(strpv_conexionUrl);
            String strl_procedure = "{ call ppsa_sp_listarDocumentoxVersion(?) }";
            objPt_cstmt = objPt_conn.prepareCall(strl_procedure);
            objPt_cstmt.setInt(1, Integer.parseInt(objA_DocumentoBean.getStrpv_codigoDocumento()));
            

            objPt_rs = objPt_cstmt.executeQuery();
            while( objPt_rs.next() ) {
                objL_documento = new DocumentoBean();
                objL_documento.setStrpv_codigoDocumento(objPt_rs.getString("ID_DOCUMENTO"));
                objL_documento.setStrpv_descripcionEmpresa("Polinsumos");
                objL_documento.setStrpv_codigoReferencial(  objPt_rs.getString("CODIGO_REFERENCIA"));
                objL_documento.setStrpv_nombreDocumento(  objPt_rs.getString("NOMBRE_DOCUMENTO"));
                objL_documento.setStrpv_codigoVersion( objPt_rs.getString("ID_VERSION"));
                //objL_documento.setStrpv_rutaArchivoPrincipal( arrL_nombres[i] );
                objL_documento.setStrpv_responsable("CARGOS");

                objL_documento.setStrpv_fechaAprobacion("FECHA_APROBACION");
                objL_documento.setStrpv_fechaVigencia("17/05/2012");
                objL_documento.setStrpv_ubicacion(objPt_rs.getString("UBICACION"));
                objL_documento.setStrpv_numeroCopia(objPt_rs.getString("NUMERO_COPIA"));
                objL_documento.setStrpv_responsableCopia(objPt_rs.getString("RESPONSABLE_COPIA"));
                objL_documento.setStrpv_descripcionTipoDocumento("Procedimiento");
                objL_documento.setStrpv_codigoEstado(objPt_rs.getString("ESTADO"));
                objL_documento.setStrpv_codigoEstadoDocumento(objPt_rs.getString("ESTADO_DOCUMENTO"));
                objL_documento.setStrpv_imagenEstado( Util.convertirCodigoEstadoImagen( objL_documento.getStrpv_codigoEstado())  );
                
                System.out.println( "objL_documento-->" + objL_documento.getStrpv_fechaAprobacion() );
                lstL_documento.add( objL_documento );
            }
            
        }catch(  Exception ex ) {
            ex.printStackTrace();
        }finally{
            closeCallableStatement(objPt_cstmt);
            closeResultSet(objPt_rs);
            closeConnection(objPt_conn);
        }  
        return lstL_documento;
    }    
    public DocumentoBean obtenerDocumento(DocumentoBean objA_documento) throws Exception {
        m_log.info("[obtenerDocumento] << ENTER");
        DocumentoBean objL_documento = new DocumentoBean();

        try{
        this.objPt_conn = DriverManager.getConnection(strpv_conexionUrl);
            String strl_procedure = "{ call ppsa_sp_obtenerDocumento(?) }";
            objPt_cstmt = objPt_conn.prepareCall(strl_procedure);
            objPt_cstmt.setInt(1, Integer.parseInt(objA_documento.getStrpv_codigoDocumento()));
            objPt_rs = objPt_cstmt.executeQuery();
            
             while( objPt_rs.next() ) {

                 objL_documento.setStrpv_codigoDocumento(objPt_rs.getString("ID_DOCUMENTO"));
                 objL_documento.setStrpv_codigoEmpresa(objPt_rs.getString("CODIGO_EMPRESA"));
                 objL_documento.setStrpv_codigoReferencial(objPt_rs.getString("CODIGO_REFERENCIA"));
                 objL_documento.setStrpv_nombreDocumento( objPt_rs.getString("NOMBRE_DOCUMENTO"));
                 objL_documento.setStrpv_codigoVersion(objPt_rs.getString("ID_VERSION"));
                 objL_documento.setStrpv_fechaAprobacion("12/02/2012");
                 objL_documento.setStrpv_fechaVigencia("12/02/2012");
                 objL_documento.setStrpv_fechaVigencia("12/02/2012");
                 objL_documento.setStrpv_periodoValidacion(objPt_rs.getString("PERIODO_VALIDACION"));
                 objL_documento.setStrpv_ubicacion(objPt_rs.getString("UBICACION"));
                 objL_documento.setStrpv_numeroCopia(objPt_rs.getString("NUMERO_COPIA"));
                 objL_documento.setStrpv_responsableCopia(objPt_rs.getString("RESPONSABLE_COPIA"));
                 objL_documento.setStrpv_descripcionDocumento(objPt_rs.getString("DESCRIPCION"));
                 objL_documento.setStrpv_codigoTipoDocumento(objPt_rs.getString("CODIGO_TIPO_DOCUMENTO"));
                 objL_documento.setArrpv_cargo(objPt_rs.getString("LISTA_CARGO").split(Constantes.SEPARADOR_STRING));
                 objL_documento.setStrpv_arrayCargo(objPt_rs.getString("LISTA_CARGO"));
                 objL_documento.setStrpv_urlPDFDocumento(objPt_rs.getString("URLPDF"));
                 //objL_documento.setLstpv_cargo(null);
             }
        
        }catch ( Exception ex ) {
            m_log.info("[obtenerDocumento] Ex*"+ ex);
            ex.printStackTrace();
        } finally {
            closeCallableStatement(objPt_cstmt);
            closeResultSet(objPt_rs);
            closeConnection(objPt_conn);
        }
        m_log.info("[obtenerDocumento] >> EXIT");
        return objL_documento;
    }
    public ResultadoBean eliminarDocumento(DocumentoBean objA_documentobean)  throws Exception {
        Integer intL_temp = -1;
        Integer intL_resultado = -1;
        ResultadoBean objResultado = new ResultadoBean();
        try {
            //this.objPt_conn = objPt_dataSource.getConnection();
            this.objPt_conn = DriverManager.getConnection(strpv_conexionUrl);
            String strl_procedure = "{ call ppsa_sp_eliminarDocumento(?,?) }";
            objPt_cstmt = objPt_conn.prepareCall(strl_procedure);

            objPt_cstmt.setInt(1, Integer.parseInt(objA_documentobean.getStrpv_codigoDocumento()));
            objPt_cstmt.registerOutParameter(2, java.sql.Types.VARCHAR );
            objPt_cstmt.execute();
            objResultado.setStrpv_mensaje(objPt_cstmt.getString(2));

        } catch ( Exception ex ) {
            ex.printStackTrace();
        } finally {
            closeCallableStatement(objPt_cstmt);
            closeResultSet(objPt_rs);
            closeConnection(objPt_conn);
        }
        System.out.println("[PerfilDao/actualizarPerfil] << EXIT");
        return objResultado;
    }
  public Integer actualizarDocumento(DocumentoBean objA_documentoBean, UsuarioBean objL_usuario) throws Exception {

        m_log.info("[actualizarDocumento] << ENTER");

        Integer intL_temp = -1;
        Integer intL_resultado = -1;
        Integer intL_version = 1;
        try {
            //this.objPt_conn = objPt_dataSource.getConnection();
            this.objPt_conn = DriverManager.getConnection(strpv_conexionUrl);
            String strl_procedure = "{ call ppsa_sp_actualizarDocumento( ?,?,?,?,?,  ?,?,?,?,?,  ?,?,?,?,?, ?,?,?,?,? ) }";
            objPt_cstmt = objPt_conn.prepareCall(strl_procedure);

            if( objA_documentoBean.getStrpv_codigoDocumento() != null && objA_documentoBean.getStrpv_codigoDocumento().trim().length() > 0 ) {
                intL_temp = Integer.parseInt(objA_documentoBean.getStrpv_codigoDocumento());
            }
            if( objA_documentoBean.getStrpv_codigoVersion() != null && objA_documentoBean.getStrpv_codigoVersion().trim().length() > 0 ) {
                intL_version = Integer.parseInt(objA_documentoBean.getStrpv_codigoVersion());
            }
            m_log.info("strpv_codigoDocumento --> " + intL_temp );
            m_log.info("strpv_codigoVersion   --> " + intL_temp );
            objPt_cstmt.setInt(1, intL_temp);
            objPt_cstmt.setString(2, objA_documentoBean.getStrpv_codigoReferencial());
            objPt_cstmt.setString(3, objA_documentoBean.getStrpv_nombreDocumento());
            objPt_cstmt.setInt(4, intL_version);
            objPt_cstmt.setString(5, objA_documentoBean.getStrpv_descripcionDocumento());
            objPt_cstmt.setString(6, objA_documentoBean.getStrpv_periodoValidacion());
            objPt_cstmt.setString(7, objA_documentoBean.getStrpv_codigoTipoDocumento());
            objPt_cstmt.setString(8, objA_documentoBean.getStrpv_codigoEmpresa());
            objPt_cstmt.setString(9, objA_documentoBean.getStrpv_ubicacion());
            objPt_cstmt.setString(10, objA_documentoBean.getStrpv_numeroCopia());
            objPt_cstmt.setString(11, objA_documentoBean.getStrpv_responsableCopia());
            objPt_cstmt.setString(12, "CS");
            objPt_cstmt.setString(13, objA_documentoBean.getStrpv_flagVersion());
            //System.out.println("join SQL --> " + StringUtils.join(objA_documentoBean.getArrpv_cargo(), Constantes.SEPARADOR_STRING));
            //objPt_cstmt.setString(14, StringUtils.join(objA_documentoBean.getArrpv_cargo(), Constantes.SEPARADOR_STRING));
            objPt_cstmt.setString(14, objA_documentoBean.getStrpv_arrayCargo());
            objPt_cstmt.setString(15, objA_documentoBean.getStrpv_arrayResponsableCopia());
            objPt_cstmt.setString(16, objA_documentoBean.getStrpv_urlPDFDocumento());
            objPt_cstmt.setString(17, objA_documentoBean.getStrpv_responsableRevisar());
            objPt_cstmt.setString(18, objA_documentoBean.getStrpv_responsableAprobar());
            objPt_cstmt.setString(19, objL_usuario.getStrpv_codigoUsuario());
            
            objPt_cstmt.registerOutParameter(20, java.sql.Types.INTEGER);

            intL_resultado = objPt_cstmt.executeUpdate();
            System.out.println("intL_resultado 1 >>"+intL_resultado);
            intL_resultado = objPt_cstmt.getInt(20);
            System.out.println("intL_resultado 2 >>"+intL_resultado);
        } catch ( Exception ex ) {
            ex.printStackTrace();
        } finally {
            closeCallableStatement(objPt_cstmt);
            closeResultSet(objPt_rs);
            closeConnection(objPt_conn);
        }
         m_log.info("[actualizarDocumento] >> EXIT");
        return intL_resultado;
    }

    public int actualizarFormato( FormatoBean objFormato, int strA_codigoDocumento, int strA_versionDocumento ) throws Exception {
        m_log.info( "[actualizarFormato] << ENTER" );
        m_log.info( "strA_codigoDocumento ->"  + strA_codigoDocumento );
        m_log.info( "strA_versionDocumento ->" + strA_versionDocumento );

        Integer intL_temp = -1;
        Integer intL_resultado = -1;
        Integer intL_version = 1;
        try {
 
            this.objPt_conn = DriverManager.getConnection(strpv_conexionUrl);
            String strl_procedure = "{ call ppsa_sp_actualizarFormato( ?,?,?,?,?, ?,?,?,? ) }";
            objPt_cstmt = objPt_conn.prepareCall(strl_procedure);

            objPt_cstmt.setInt(1, -1 );
            objPt_cstmt.setInt(2, -1 );
            objPt_cstmt.setInt(3, strA_codigoDocumento );
            objPt_cstmt.setInt(4, strA_versionDocumento );
            objPt_cstmt.setString( 5, objFormato.getStrpv_nombreFormato() );
            objPt_cstmt.setString( 6, objFormato.getStrpv_codigoRefFormato() );
            objPt_cstmt.setString( 7, objFormato.getStrpv_estadoFormato() );
            objPt_cstmt.setString( 8, objFormato.getStrpv_extension() );
            objPt_cstmt.setString( 9, objFormato.getStrpv_codigoArchivo() );
            objPt_cstmt.execute();
            //objPt_cstmt.registerOutParameter(20, java.sql.Types.INTEGER);

        } catch ( Exception ex ) {
            ex.printStackTrace();
        } finally {
            closeCallableStatement( objPt_cstmt );
            closeResultSet( objPt_rs );
            closeConnection( objPt_conn );
        }
        m_log.info( "[actualizarFormato] >> EXIT" );
        return intL_resultado;
    }
    public DocumentoBean obtenerUrlPDF( String strpv_codigoDocumento, UsuarioBean objL_usuario ) throws Exception {
        
        DocumentoBean objL_documento = new DocumentoBean();
        try {
            this.objPt_conn = DriverManager.getConnection(strpv_conexionUrl);
            String strl_procedure = "{ call ppsa_sp_obtenderCodigoPdf(?,?,? ,?,?) }";
            objPt_cstmt = objPt_conn.prepareCall(strl_procedure);
            objPt_cstmt.setString(1, strpv_codigoDocumento);
            objPt_cstmt.setString(2, "1");
            objPt_cstmt.setString(3, objL_usuario.getStrpv_codigoUsuario());
            objPt_cstmt.registerOutParameter(4, java.sql.Types.INTEGER);
            objPt_cstmt.registerOutParameter(5, java.sql.Types.VARCHAR);
            objPt_cstmt.executeUpdate();
            objL_documento.setStrpv_urlPDFDocumento("" + objPt_cstmt.getInt(4));
            objL_documento.setStrpv_codigoReferencial(objPt_cstmt.getString(5).trim());

        } catch ( Exception ex ) {
            ex.printStackTrace();
        } finally {
            closeCallableStatement(objPt_cstmt);
            closeResultSet(objPt_rs);
            closeConnection(objPt_conn);
        }
        return objL_documento;
    }

    public List<CargoBean> obtenerBitacoraArea( String strpv_codigoDocumento, String strp_codigoVersion ) throws Exception {
        System.out.println("[DocumentoDao/obtenerBitacoraArea] << ENTER");
        List<CargoBean> lst_cargoDocumento = new ArrayList<CargoBean>();
        CargoBean objL_cargo = null;
        try {
            this.objPt_conn = DriverManager.getConnection(strpv_conexionUrl);
            String strl_procedure = "{ call ppsa_sp_obtenerBitacoraArea(?,?) }";
            objPt_cstmt = objPt_conn.prepareCall(strl_procedure);
            objPt_cstmt.setInt(1, Integer.parseInt(strpv_codigoDocumento));
            objPt_cstmt.setInt(2, Integer.parseInt(strp_codigoVersion));
            objPt_rs = objPt_cstmt.executeQuery();

            while( objPt_rs.next() ) {
                objL_cargo = new CargoBean();
                objL_cargo.setStrpv_nombreArea(objPt_rs.getString("NOMBRE_AREA"));
                objL_cargo.setStrpv_nombreCargo(objPt_rs.getString("NOMBRE_CARGO"));
                lst_cargoDocumento.add(objL_cargo);
            }

        } catch ( Exception ex ) {
            ex.printStackTrace();
        } finally {
            closeCallableStatement(objPt_cstmt);
            closeResultSet(objPt_rs);
            closeConnection(objPt_conn);
        }
        return lst_cargoDocumento;

    }
    
    public List<TipoDocumentoBean> selectTipoDocumento() throws Exception {
        m_log.info("[obtenerTipoDocumento] << ENTER");
        List<TipoDocumentoBean> lst_tipoDocumento = new ArrayList<TipoDocumentoBean>();
        TipoDocumentoBean objL_temp = null;
        try {
            this.objPt_conn = DriverManager.getConnection(strpv_conexionUrl);
            String strl_procedure = "{ call ppsa_sp_selectTipoDocumento() }";
            objPt_cstmt = objPt_conn.prepareCall(strl_procedure);
            objPt_rs = objPt_cstmt.executeQuery();

            while( objPt_rs.next() ) {
                objL_temp = new TipoDocumentoBean();
                objL_temp.setStrpv_codigoTipoDocumento(objPt_rs.getString("ID"));
                objL_temp.setStrpv_nombreTipoDocumento(objPt_rs.getString("NOMBRE"));
                lst_tipoDocumento.add(objL_temp);
            }

        } catch ( Exception ex ) {
            ex.printStackTrace();
        } finally {
            closeCallableStatement(objPt_cstmt);
            closeResultSet(objPt_rs);
            closeConnection(objPt_conn);
        }
        m_log.info("[obtenerTipoDocumento] >> EXIT");
        return lst_tipoDocumento;
    }    
}
